package org.hbkj.springbootmybatis.dao;

import org.apache.ibatis.annotations.Param;
import org.hbkj.springbootmybatis.entity.OrderDo;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Date;

@Repository
public interface OrderDao {
    // 插入订单
    int insertOrder(OrderDo orderDo);

    // 根据订单ID删除订单
    int deleteOrder(String orderId);

    // 更新订单状态 - 使用多参数替代Map
    int updateOrderStatus(
            @Param("orderId") String orderId,
            @Param("orderStatus") String orderStatus,
            @Param("updateTime") Date updateTime
    );

    // 根据订单ID查询单个订单（关联查询商品信息）
    OrderDo selectByOrderId(String orderId);

    // 查询所有订单（关联查询商品信息）
    List<OrderDo> selectAllOrders();

    // 根据用户ID查询订单列表（关联查询商品信息）
    List<OrderDo> selectOrdersByUserId(Integer userId);

    // 根据订单状态查询订单（关联查询商品信息）
    List<OrderDo> selectByStatus(String orderStatus);

    // 统计用户订单数量
    int countByUserId(Integer userId);
}

